From d7e8de1b925f009c78ef1199763a147f0b4aaf24 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Sat, 4 Feb 2006 10:58:28 +0100 Subject: [PATCH] Update the TPM hotplug scripts to determine the reason of a device creation (create/resume). Signed-off-by: Stefan Berger --- tools/examples/vtpm | 12 ++++++------ tools/examples/vtpm-common.sh | 21 +++++++++++++++++---- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/tools/examples/vtpm b/tools/examples/vtpm index bc8b64d974..2d590a0158 100644 --- a/tools/examples/vtpm +++ b/tools/examples/vtpm @@ -4,19 +4,19 @@ dir=$(dirname "$0") . "$dir/vtpm-common.sh" -case "$command" in - online | offline) - exit 0 - ;; -esac - case "$command" in add) vtpm_create_instance ;; + online) + vtpm_create_instance + ;; remove) vtpm_remove_instance ;; + offline) + vtpm_remove_instance + ;; esac log debug "Successful vTPM operation '$command'." diff --git a/tools/examples/vtpm-common.sh b/tools/examples/vtpm-common.sh index 4c90558ef8..8344fdcfef 100644 --- a/tools/examples/vtpm-common.sh +++ b/tools/examples/vtpm-common.sh @@ -219,6 +219,17 @@ function remove_entry () { } +# Find the reason for the creation of this device: +# Set global REASON variable to 'resume' or 'create' +function get_create_reason () { + local resume=$(xenstore-read $XENBUS_PATH/resume) + if [ "$resume" == "True" ]; then + REASON="resume" + else + REASON="create" + fi +} + #Create a vTPM instance # If no entry in the TPM database is found, the instance is # created and an entry added to the database. @@ -226,6 +237,7 @@ function vtpm_create_instance () { local domname=$(xenstore_read "$XENBUS_PATH"/domain) local res set +e + get_create_reason find_instance $domname res=$? if [ $res -eq 0 ]; then @@ -243,7 +255,7 @@ function vtpm_create_instance () { add_instance $domname $instance if [ "$REASON" == "create" ]; then vtpm_create $instance - elif [ "$REASON" == "hibernate" ]; then + elif [ "$REASON" == "resume" ]; then vtpm_resume $instance $domname else #default case for 'now' @@ -252,11 +264,12 @@ function vtpm_create_instance () { fi if [ "$REASON" == "create" ]; then vtpm_reset $instance - elif [ "$REASON" == "hibernate" ]; then + elif [ "$REASON" == "resume" ]; then vtpm_setup $instance else #default case for 'now' - vtpm_reset $instance + #vtpm_reset $instance + true fi xenstore_write $XENBUS_PATH/instance $instance set -e @@ -273,7 +286,7 @@ function vtpm_remove_instance () { #Something is really wrong with the DB log err "vTPM DB file $VTPMDB has no entry for '$domname'" else - if [ "$REASON" == "hibernate" ]; then + if [ "$REASON" == "suspend" ]; then vtpm_suspend $instance fi fi -- 2.30.2